package DAO;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import DBConection.ConexionBD;
import Modelo.*;

public class ViajeDao {

	private Connection conn;

	public ViajeDao() {
		conn = ConexionBD.getConnection();
	}

	public void addViaje(Viaje objviaje) {

		try {

			String sql = "INSERT INTO "+ConexionBD.getNombre_BD()+".Tbl_Viajes(lugarOrigenId,lugarDestinoId,Ruta,Distancia)"
					+ " VALUES (?, ?, ?, ?)";
			PreparedStatement ps = conn.prepareStatement(sql);

			ps.setInt(1,objviaje.getLugarOrigenId());
			ps.setInt(2,objviaje.getLugarDestinoId());
			ps.setString(3, objviaje.getRuta());
			ps.setFloat(4, objviaje.getDistancia());
			
			ps.executeUpdate();

		} catch (SQLException e) {
			e.printStackTrace();
		}
	}	
		public void removeViaje(int viajeId) {
			try {
				String sql = "DELETE FROM "+ConexionBD.getNombre_BD()+".Tbl_Viajes WHERE viajeId=?";
				PreparedStatement ps = conn.prepareStatement(sql);
				ps.setInt(1, viajeId);
				ps.executeUpdate();

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		public void editLugar(Viaje objviaje) {
			try {
				String sql = "UPDATE "+ConexionBD.getNombre_BD()+".Tbl_Viajes SET lugarOrigenId=?,lugarDestinoId=?,Ruta,Distancia=? "
						+ " WHERE lugarId=?";
				PreparedStatement ps = conn.prepareStatement(sql);

				ps.setInt(1,objviaje.getLugarOrigenId());
				ps.setInt(2,objviaje.getLugarDestinoId());
				ps.setString(3, objviaje.getRuta());
				ps.setFloat(4, objviaje.getDistancia());
				
				ps.executeUpdate();

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		public List<Viaje> getAllViajes() {
			List<Viaje> viajes = new ArrayList<Viaje>();
			try {
				String sql = "SELECT * FROM "+ConexionBD.getNombre_BD()+".Tbl_Viajes";
				PreparedStatement ps = conn.prepareStatement(sql);
				ResultSet rs = ps.executeQuery();
				while (rs.next()) {
					Viaje objviaje = new Viaje();
					objviaje.setViajeId(rs.getInt("viajeId"));
					objviaje.setLugarOrigenId(rs.getInt("lugarOrigenId"));
					objviaje.setLugarDestinoId(rs.getInt("lugarDestinoId"));
					objviaje.setRuta(rs.getString("Ruta"));
					objviaje.setDistancia(rs.getFloat("Distancia"));
					
					viajes.add(objviaje);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}

			return viajes;
		}

		public Viaje getLugarById(int viajeId) {
			Viaje objviaje = new Viaje();
			try {
				String sql = "SELECT * FROM "+ConexionBD.getNombre_BD()+".Tbl_Viajes WHERE viajeId=?";
				PreparedStatement ps = conn.prepareStatement(sql);
				ps.setInt(1, viajeId);
				ResultSet rs = ps.executeQuery();

				if (rs.next()) {
					objviaje.setViajeId(rs.getInt("viajeId"));
					objviaje.setLugarOrigenId(rs.getInt("lugarOrigenId"));
					objviaje.setLugarDestinoId(rs.getInt("lugarDestinoId"));
					objviaje.setRuta(rs.getString("Ruta"));
					objviaje.setDistancia(rs.getFloat("Distancia"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			return objviaje;
		}	
		
	

}

